/***************************************************************************/
/* Procedimiento:  Aduana_MultipleInsertar
/* Descripcion:   Insertar o Modifica una fila en la tabla Aduana_Multiple
/* Parametros:    ?InfoParametros
/*                pTransaccion. Numero identificador de la Transaccion
/*                pMensaje. Mensaje de comfirmacion o excepcion
/* Comentarios:         
/****************************************************************************/

PROCEDURE  Aduana_MultipleInsertarModificar(pcomentarios VARCHAR2, pnidDocumento NUMBER, 
						pnidEmpresaDestino NUMBER, ptipoMovimiento NUMBER, pfInicio_Operacion VARCHAR2, 
						pfFin_Operacion VARCHAR2, preferencia VARCHAR2, preferencia_Aduana VARCHAR2, 
						pnidDocumento_Entrada NUMBER, pnidViaje NUMBER, pnidMuelle NUMBER, 
						pnidBuque NUMBER, pnombre_Muelle VARCHAR2, pnombre_Buque VARCHAR2, 
						pnidProveedor NUMBER, pnombre_Proveedor VARCHAR2, pnombre_Responsable VARCHAR2, 
						pnidTipoReglaDespacho NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   Aduana_Multiple
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO Aduana_Multiple
	           (nid, comentarios, nidDocumento, 
						nidEmpresaDestino, tipoMovimiento, fInicio_Operacion, 
						fFin_Operacion, referencia, referencia_Aduana, 
						nidDocumento_Entrada, nidViaje, nidMuelle, 
						nidBuque, nombre_Muelle, nombre_Buque, 
						nidProveedor, nombre_Proveedor, nombre_Responsable, 
						nidTipoReglaDespacho)
    VALUES     (seq_Aduana_Multiple.nextval, pcomentarios, pnidDocumento, 
						pnidEmpresaDestino, ptipoMovimiento, to_date(pfInicio_Operacion,'DD/MM/YYYY HH24:MI:SS'), 
						to_date(pfFin_Operacion,'DD/MM/YYYY HH24:MI:SS'), preferencia, preferencia_Aduana, 
						pnidDocumento_Entrada, pnidViaje, pnidMuelle, 
						pnidBuque, pnombre_Muelle, pnombre_Buque, 
						pnidProveedor, pnombre_Proveedor, pnombre_Responsable, 
						pnidTipoReglaDespacho);
  ELSE
    UPDATE Aduana_Multiple
    SET    comentarios=pcomentarios, nidDocumento=pnidDocumento, 
		nidEmpresaDestino=pnidEmpresaDestino, tipoMovimiento=ptipoMovimiento, fInicio_Operacion=to_date(pfInicio_Operacion,'DD/MM/YYYY HH24:MI:SS'), 
		fFin_Operacion=to_date(pfFin_Operacion,'DD/MM/YYYY HH24:MI:SS'), referencia=preferencia, referencia_Aduana=preferencia_Aduana, 
		nidDocumento_Entrada=pnidDocumento_Entrada, nidViaje=pnidViaje, nidMuelle=pnidMuelle, 
		nidBuque=pnidBuque, nombre_Muelle=pnombre_Muelle, nombre_Buque=pnombre_Buque, 
		nidProveedor=pnidProveedor, nombre_Proveedor=pnombre_Proveedor, nombre_Responsable=pnombre_Responsable, 
		nidTipoReglaDespacho=pnidTipoReglaDespacho
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;
